iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
Modern Web

前輩說Laravel不難,好啊那就1人前後端試試看啊系列 第 15

Laravel: Model 玩轉資料庫&資料庫設計:ORM-Day14

  • 分享至 

  • xImage
  •  

連幾天跳針分享了筆記,今天回來Laravel~
之前資料庫的部分其實還沒完,再回來探討一下Laravel資料庫的玩法。

官方文檔這邊服用:Eloquent: Getting Started

Eloquent 是Laravel的物件關聯對應ORM(Object-relation mapper)

啥是ORM

ORM 在網站開發結構中,是在『資料庫』和『 Model 資料容器』兩者之間,
簡單來說,它是一個幫助使用者更簡便、安全的去從資料庫讀取資料,
ORM 的一個特性為: 透過程式語言(PHP),去操作資料庫語言( SQL )。

優點:

  • 安全性:可以防範 SQL惡意注入( SQL injection ),如果我們某段網站是直接寫SQL去讀取DB,駭客可以傳入“Delete” 刪除我們的資料庫。但使用ORM時候,我們就可以只吃變數,碰到"Delete"就判別不符合而擋掉攻擊。
  • 簡化:
  • 通用:不同資料庫間,SQL語法也會有不同,使用ORM的話,就不用擔心要換語法。

缺點:

  • 效能變慢:『把程式語言轉譯成 SQL語言』
  • 複雜查詢維護性低

更詳細內容請參考:
[Day20] 資料庫設計概念 - ORM

建立Laravel Model

而Laravel的ORM設計,就體現在Model上。那就來讓我們建立Model吧!

先進入我們workspace容器,然後打Model建立的命令:

laradock % docker-compose exec workspace bash
/var/www# cd rachel-projects/career-expo/
/var/www/rachel-projects/career-expo# php artisan make:model CareerUser

就看到我們的app>Models>CareerUser.php建立好了

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class CareerUser extends Model
{
    protected $table = 'career_users';
    public $primaryKey = 'id';
    protected $hidden = [
        'created_at', 'updated_at',
    ]; //保護某些欄位不被用戶讀取到
}

使用Laravel Model

在Controller使用Model,如我們要取用CareerUser所有的列,就是:CareerUser::all() 這是laravel中的Eloquent語法。

<?php

namespace App\Http\Controllers;

use App\Models\CareerUser; //記得引用
use Illuminate\View\View;

class HomeController extends Controller
{
    public function showIndex(): View {
        return view('index', ['users' => CareerUser::all()]);
        
    }
}

以上!

參考:
Day12 laravel 使用 model 上篇


上一篇
Chrome用什麼來跑我們的JS:底層的底層:V8 & Turbofan筆記-Day13
下一篇
Laravel: 3招把DB資料傳到View+Controller-Day15
系列文
前輩說Laravel不難,好啊那就1人前後端試試看啊31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言